• version 0.0 ... 27/04/2019
    rev .. 25/07/2020


    Horloge 4 Matrice 8x8 pour HH:MM et Anneau 60 leds pour secondes (Version 1 avec 18F26K22)
    Schéma
    Montage Mecanique V1 (Gaya) (20/06/2019)
    Version 1: pour 18F26K22 (01/12/2019) avec Anneau RGB complet de 60 leds + Matrices normales
    Appinventor2 Application (GAYA)


    Version 2 : pour 18F27K42 (HC06) (01/12/2019) avec Anneau RGB 4x15 leds + Reverse Matrices
    2 Affichages fixes alterné HH:MN et Temperature Ambiante + ruban secondes sur anneau 60 leds
    Montage Mecanique V2 (17/112019)
    Appinventor2 Application ( HC06)

    Version 3 : pour 18F27K42 (25/07/2020) avec Anneau RGB en 4x15 leds + Reverse Matrices
    4 Affichages fixes alternés : Date-Jour .. Mois .. HH:Mn.. Temper .. + ruban secondes sur anneau 60 leds
    Impossibilité , à mon niveau, d' utiliser en meme temps le Defilement lateral des 4 matrices et avance ruban 60 leds

    Version 4 : pour 18F26K22 (24/07/2020) avec Anneau RGB 60 Leds + Direct Matrices
    4 Affichages fixes alternés de : Date-Jour .. Mois .. HH:Mn.. Temper .. + ruban secondes sur anneau 60 leds
    Test#1 sur un bloc de 4 matrices equipant l' Horloge defil 12 matrices
    Software
    Test#2 sur Base 18F26K22 et 1 seul bloc de 4 matrices
    SOFTWARE update V4 GAYA

    annexes:

    Test Anneau de 60 leds WS2812 , commande via protocole specifique 1 fil !
    Symetrisation Affichage des caracteres sur l'Horloge
    avec 2 digits centrés à Gauche et 2 digits centrés à droite + caractére Mixte spécial : °C

    Lien sur Tests defilement 4 Matrices 8x8
    Mesure de la durée d' Execution d'une Fonction ou sous programme


    Test Version1 : Anneau 60 Leds WS2812 avec PIC 18F26K22

    Usage d'un PIC18F26K22 PDIP 28 pins et du Pickit3 Microchip pour charger l'executable
    *un PIC12F1840 DIP 8 serait suffisant ...
    Environnemen t: Mikro C V 7.30
    MCU : FOSC interne 16x4=64MHz

    ANNEAU 60 leds

    exemple de fournisseur : modele 60leds : 12,07€
    Brand Name : XUNATA
    LED Chip Brand : Epistar
    Model Number:WS2812 LED Chip
    LED Chip Model:SMD5050
    Voltage : 5V
    Interface: VCC,GND,DIN,DOUT
    Diametre externe 170mm ( 155mm interne)

    datasheet WS2812

    Intelligent control LED integrated light source
    La lecture de cette datasheet est INDISPENSABLE pour comprendre le fonctionnement ASYNCHRONE de
    la liaison pour commander ce composant.

    ( Traduction partielle)
    le circuit de controle RGB (Rouge Vert Bleu) est intégré dansle boitier et formme un controle comple de pixell.
    Un circuit interne de remise en forme apres chaque element permet de ne pas accumuler les erreurs.
    Un circuit interne de RESET et perte d'alimentation est inclus .
    Chaque pixel des 3 couleurs elementaires RGB peunet avoir 256 niveaux d'amplitude , pouvant ainsi definir 6777216 couleurs
    La frequence de rafraichissement doit etre > 400KHz.
    Une sortie permet de monter les elements (aneaux) en cascade , pour une transmission unifilaire ... jusqu'à L=5M
    On peut avoir un rafraichissement jusqu'à 30Frame/sec jusqu'à 512 leds en cascade.
    Les data sont envoyée à 800 Kbps.

    Caracteristique LED :

     

    nM

    mCd

    mA

    volt

    Rouge

    620-630

    550-700

    20

    1.8-2.2

    Vert

    515-530

    1100-1400

    20

    3.0-3.2

    Bleu

    465-475

    200-400

    20

    3.0-3.4


    WS2812
    Operation frequency Fosc2 —— —— 800 —— KHz
    transmission data rate mini 400Kbps
    Data transfer time( TH+TL=1.25µs±600ns)
    T0H 0 code ,high voltage time 0.35us ±150ns
    T1H 1 code ,high voltage time 0.7us ±150ns
    T0L 0 code , low voltage time 0.8us ±150ns
    T1L 1 code ,low voltage time 0.6us ±150ns
    RES low voltage time Above 50µs

    1 bit de commande => necessite 1 byte
    3 bytes pour GRB valeur
    donc 3 x 8 = 24 bits de commande
    60 leds * 3 bytes couleur GRB => 180 bytes
    180 x 8 bits de commandes => 1440 bytes pour piloter 60 leds RGB


    MCU à 64 MHz ==> 62.5nS par cycle = 1 NOP
    un bit de commande doit avoir une periode comprise entre 1,2µS +- 600nS
    soit de 600nS à 1800 ns ( en therorie)
    recommandé 1,2 à 1,4µS maxi

    avec ajustage du nombre de NOP dans ZEROS et ONES
    Zero = 380ns ON + 860nS OFF soit T= 1260 nS
    UN= 620ns ON + 640nS OFF soit T= 1260 nS

    Anneau_60_leds_RGB_SPI_Hardw_Test_190408.c
    sequence de test :
    SQA=1;
    ZEROS();ZEROS();ZEROS();ZEROS();ONES();ONES();ONES();ONES(); // VERT
    SQA=0;
    ZEROS();ZEROS(); ZEROS();ZEROS();ZEROS();ZEROS();ZEROS();ZEROS() ; // ROUGE
    SQA=1;
    ZEROS();ZEROS(); ZEROS();ZEROS();ZEROS();ZEROS();ZEROS();ZEROS() ; // BLEU
    SQA=0;

    allume la 1ere led en VERT !


    Partie ASM pour generatioon d'un bit de commande

    unsigned char LATCx absolute 0x0F8B;

    void ONES ()
    {
    _asm {
    BSF _LATCx,5;
    NOP;
    NOP;
    NOP;
    NOP;
    NOP;
    NOP;
    NOP;
    NOP;
    NOP;
    BCF _LATCx,5;
    NOP;
    NOP;
    NOP;
    NOP;
    NOP;
    }
    }



    Analyse signal avec IKAlogig SQA50 analyser

    images/t_SQA_test-routine_ZEROS.gif images/t_SQA_test-routine_ONES.gif
    envoi d'un bit à ZERO envoi d'un bit à UN

    le timing est respecté ..( precision du NOP =62.5nS avec reglage fin de +-3% possible avec valeur du registre OSCTUNE )
    L'extinction de l'anneau se fait en envoyant 1440 bytes à ZERO

    L'index pointeur de led est remis à zero si Dout à zéro pendant > 50µS


    la boucle principale :


    // index led = 0
    DOut=0;
    Delay_us(100);
    for (j=0;j<NB_LEDS;j++)
    {
    DOut=0;
    Delay_us(100);
    for (k=0;k<j;k++)
    { SQA=1;
    ZEROS();ZEROS(); ZEROS();ZEROS();ZEROS();ZEROS();ZEROS();ZEROS();
    ONES(); ONES(); ONES(); ONES(); ONES(); ONES(); ONES(); ONES(); // ROUGE
    ZEROS();ZEROS(); ZEROS();ZEROS();ZEROS();ZEROS();ZEROS();ZEROS();
    SQA=0;
    }
    //Delay_1sec();
    Delay_ms(100);
    UART1_Write_CText(" time is ");
    WordToStr(j,CRam1);
    UART1_Write_Text(CRam1);
    CRLF1();
    }
    Delay_1sec(); Delay_1sec(); Delay_1sec(); Delay_1sec();
    UART1_Write_CText(" RAZ anneau \r\n" );
    for (j=0;j<1440;j++)
    {
    ZEROS();

    }
    UART1_Write_CText(" fin \r\n");



    Schema de test :

    Usage de la platine BASE TEST 18F26K22
    DOut RC5 est relié à DIN anneau Leds ( et bien sur le +5V et Le Gnd 0V)
    Liaison UART<-> Terminal PC via cordon Prolific USB/TTL
    Liaison RC0 pour synchro analyser SQA


    SOFTWARE :

    projet mikroC : TEST_Anneau_60leds_RGB_18F26K22.zip
    exec :
    Anneau_60leds_cde_bit_bang_18F26K22.hex
    main source :
    Anneau_60_leds_RGB_Bit_bang_Hardw_Test_190408.c

    Video :
    Anneau_60leds_Test_190408.webm




    Horloge Version 1 , 4 xMatrice 8x8 et Anneau complet de 60 leds

    Cette horloge est commandée suelement par 4 fils ( hors alimentation !)
    3 fils en SPI pour les 4 MAX7219 pilotant les 4 matrices de leds 8x8
    1 fil protocole seriel WS2812 pour l'anneau circulaire de 60 leds RGB

    HARDWARE :

    Base 18F26K22 , MCU et annexes, description ICI

    Horloge RTC DS3231 delivrant Sec,Min,Heures et synchro 1HZ pour l'avance des leds anneau RGB
    le bloc de 4 matrice 8x8 avec MAX7219
    L'Anneau équipé de ses 60 leds RGB WS2812 , montées sur un circuit imprimé avec liaison 3 fils
    le report de bus (DOUT) WS2812 n'est pas utilisé ici .
    une alim 5V USB 2A + regulateur à decoupage pour reglage de l'Alim. entre 3,3V et 4,0V


    Schéma de base :

    ../_18FxxKxx/images/t_Base_18F26K22_1903_seule.gif../_18FxxKxx/images/t_Base_18F26K22_pour_divers_test_1903.gif

    Nota :
    vu le nombre tres réduit de connections actives utilisées :
    1 pour l'anneau 60 leds (+ Vcc et Gnd)
    3 pour les matrices (+Vcc et Gnd) ,
    2 pour l' UART= bluetooth (+Vcc et Gnd)
    ....ce schema n'est pas personalisé.


    HARDWARE :



    images/t_Horloge_4_Matrices8x8_Anneau_60_190424_PIC.gif images/t_Horloge_4_Matrices8x8_Anneau_60_190424.gif
    base 18F26K22 assemblage



    Il faut faire cohabiter plusieurs liaisons (Soft):
    * SPI bit bang (MAX7219)
    * SPI (bit bang) pour WS2812
    * bus I2C1 (Hardware) pour l'horloge RTC
    * UART1 (dialogue et tracage)
    * OWS pour capteur de temperature
    * analogique : capteur de luminosité ( LDDR ) ou via un TL275 (frequence)

    Modif. de la font 8x8 :

    usage de PixelFontEdit-2.7.zip
    pour ajuster les caracteres 0 à 9 , resultat dans My_8X8_FONT_190422.h
    séparateur special pour HH:MM, point special pour decimal temperature t rajout caractere special °C,
    // separateur HH et MM
    static unsigned char Lettre_Sep[8]={
    0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, // Char 221 (.)
    };
    static unsigned char Lettre_Point[8]={
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, // Char 251 (.)
    };
    static unsigned char Lettre_Degre_C[8]={
    0xE0, 0xA0, 0xEF, 0x08, 0x08, 0x08, 0x08, 0x0F, // Char 127 (.)
    };




    le logicilel Pixel font edit : https://www.min.at/prinz/o/software/pixelfont/

    La moitié de la font est conservée (1024 bytes au lieu de 2048 !) caracteres de 0 à 127
    et les 3 caracateres specifiques sont definis à part (3x8=24 bytes), donc 1000 bytes gagnés ..
    note 1 : la fonte aurait pu etre stockée en Eeprom ou Flash , mais acces plus lent .
    note 2: De meme On ne pourrait utiliser que les chiffres de 0 à 9 + les 3 caracteres speciaux .
    .mais reserve pour affichage Date ,jour,mois en clair ..plus tard ... De plus on a beaucoup de RAM dans ce PIC




    Software :

    Reprise des elements software déja utilisés pour Test Matrice et test Anneau
    L'Avancement des leds secondes se fait en effacant tout et retracant le nb de led jusqu'à la seconde en cours.
    Le signal 1HZ emis par la RTC DS3231 rentre sur RB0 entree interruption du MCU
    L'interruption 1Hz , soit 1 sec , leve un drapeau , permettant de bloquer le deroulement du programme
    en fin d'execution de la boucle principale, pour assurer le synchronisme d'allumage Anneau secondes
    Un caractere "separateur" de 4 leds est mixé avec le digit des Heures, toutes les 2 secondes, pour justement
    séparer les infos HH: MM.




    La detection Seconde=0 , active la RAZ complete de l'Anneau et reinitialise le compteur d'avancement secondes (js)
    A chaque tour de boucle principale (à chaque seconde!) on change le mode d'affichage RGB choix 1parmi 5 modes pre-établis.
    Dans le cas present on alterne les couleurs.
    Nota: la luminosité des leds est TRES IMPORTANTE
    le reglage actuel est au minima 1/8em

    Rajout capteur de temperature OWS DS18B20

    Un bit de commutation dans l'affichage Matrice, permet de basculer Affichage Time ou Affichage Temperature
    Time et Temperature sont acquis à chaque cycle (seconde)
    Une fenetre temporelle de 4 secondes permet l'affichage alterné Time ou Temperature sonde DS18B20
    Il suffit d'intervertir 2 valeurs pour recadrer le separateur ou le point decimal,
    le 1/100em de degré est sacrifié pour afficher le suffixe °C
    La Date complete + Time (HH:MM:SS) + Temperature (DD.DD°C" sont envoyés sur un terminal ,chaque seconde.
    via la sortie UART1
    Le terminal permet la remise à l'heure RTC .

    images/DS18B20_Pinout.jpg

    SOFTWARE




    Projet MikroC :
    Projet Version 1 avec 18F26K22 :
    Horloge_Anneau_60leds_190427.zip
    Chargeur : Horloge_4_Matrice8x8_Anneau_60leds_RGB_190427.hex
    Source : Horloge_4_Matrice8x8_Anneau_60leds_RGB_190428.c
    Fonte : CP112_degre.h
    lib RTC :
    Tiny_RTC_DS3231_for_AI2_1904.h
    Tiny_RTC_DS3231_for_AI2_1904.mcl

    voir derniere version 1 avec 18F27K42 rev 191201 , ICI





    Videos:
    Anneau_60leds_Test_190408.webm
    Horloge_Matrice_Anneau_190427.webm



    rev 01/05/2019

    Suite à une remarque concernant la dissymetrie d'affichage, modif du programme :
    usage de 2 ensemble de caracteres pour chifres centré à gauche et chiffres centrés à droite ,en matrice de 5x8 au lieu de 6x8
    idem pour le separateur entre HH et MM , et le point decimal temperature
    qui sont répartis à gauche et à droite de l'axe median




    MAJ software
    voir dernier version 1 (18F27K42) rev 191201 , ICI
    Horloge_4_Matrice8x8_Anneau_60leds_RGB_190501.c


    Video
    Horloge_4_Matrice_et_Anneau_60leds_190501.webm


    Mise en Boite :
    Image de synthese (en Raytracing : Moray+PovRay)

    images/t_Horloge_Anneau_190523b.gif images/t_Horloge_Anneau_190523.gif






    Montage Mecanique (Version 1)

    Usage d'un cadre photo ( Action ) avec vitre pour contenir l'anneau et la matrice ,
    Une contre plaque vissée sur le cadre photo
    et un vieux support de cadre photo , servant aussi de protection du montage , qui est fixé
    sur la contre plaque, via des entretoises .
    Rajout d'un film translucide juste derriere la vitre , pour diffuser la lumiere (trop percutante) des leds RGB, ceci, meme au mini de puissance.

    20/06/2019

    connection 4 matrices 8x8leds
    Pin 13 RC2 -- Violet-> SPI Clock -> 5 Matrices 4xMAX7219
    Pin 12 RC1 -- Vert --> SPI Dout --> 3 Matrices 4xMAX7219
    Pin 11 RC0 -- Bleu---> CS ------> 4 Matrices 4xMAX7219
    GND -------------------------------> 2 Matrices 4xMAX7219
    VCC -------------------------------> 1 Matrices 4xMAX7219


    Liaisons au module BlueTooth HC06
    Pin 18 RC7 RX UART ---> TX HC06 or <-- Keyboard fil Vert cable prolific
    Pin 17 RC6 TX UART ---> RX HC06 or --> Display fil Blanc cable prolific
    VCC ------------------------> HC06
    Gnd -------------------------> HC06


    Liaisons capteur OWS DS18B20
    Pin 2 RA0 <---- OWS input pour DS18B20
    VCC ------------------------>DS18B20
    Gnd ------------------------->DS18B20


    Liaisons RTC DS3231
    Gnd ---------------------Noir ----- 1 RTC
    VCC --------------------Orange--- 2 RTC
    Pin 15 RC4 SDA I2C ---- Jaune --- 3 RTC
    Pin 14 RC3 SCL I2C ---- Bleu ---- 4 RTC
    Pin 21 RB0 <----- ------- Jaune --- 5 RTC
    // top 1Hz

    Connecteur ICSP ..à disposition

    images/t_Gabarit_Platine_support_Horloge_Anneau.gif
    Gabarit de percçage plaque MDF de 4mm epaisseur

    Le boitier original

    images/t_Horloge_4_Matrices8x8_Anneau_60_190620_Hardware.gif images/t_Horloge_4_Matrices8x8_Anneau_60_190620_Preassemblage.gif images/t_Horloge_V1_Anneau_60leds_Matrice_vue_ARR_191201.gif
    Hardware Anneau et Matrice en face AVANT Plaque support de l'horloge (vue ARRiere) rev 191201


    images/t_Horloge_4_Matrices8x8_Anneau_60_190620_Back_View.gif images/t_Horloge_4_Matrices8x8_Anneau_60_190620_Top_View.gif
    vue ARRiere avec bequille de maintien vue de dessus : hardware en sandwich

    Bequille Arriere recupérée sur un autre support cadre photo ( un peu juste en largeur ,pour les fixation,mais OK avec des rondelles)
    Celle ci est fixée par un rajout d'entretoise , vissées sur les 4 fixations de la carte electronique


    Via blueTooth ,
    association : HC06_0006_2 VERSION : OKlinvorV1.8 00:18:E4:40:00:06
    possibilité de remettre à l'heure la RTC , ou changer le mode 1 ou mode 2 pour les leds
    remise à l'heure, exemple pour 20 juin 2019 18H33 jour N° 4 (Jeudi) : U;20;06;19;18;33;04;# <CR>
    Mode 1 : M=1<CR> La couleur change à chaque seconde , 5 couleurs , Led Violet vif pour les valeurs 5,10,15 ... 55
    Mode 2 : M=2<CR> la couleur des leds change à chauque minute

    images/t_Horloge_4_Matrices8x8_Anneau_60_190620_H_M1.gif images/t_Horloge_4_Matrices8x8_Anneau_60_190620.gif
    affiche en mode =1 alternance couleur chaque sec Affichage (en mode=2) de Temperature et Heure


    SOFTWARE :

    Cette appli n'utilise pas de quartz pour stabiliser la frequence , mais l'oscillateur interne du MCU est quand meme assez stable,
    vu que je n'ai rencontré AUCUN probleme avec le terminal à 19200 bds (est meme OK à 115200 bds)
    Encore une fois, l'analyser logique a été tres utile pour arriver à faire fonctionner cet anneau led qui ne comporte pas de Synchro !
    Reglage OK par pas de 62,5nS = 1 NOP = 1cycle avec FOSC=64 MHz ( 16Mhz de base x PLL 4 fois)
    Fonctionne OK pour toute la plage de reglage de OSCTUNE , soit +-3% de FOSC nominal .
    Usage d'une sortie annexe du MCU pour assurer la synchro de capture du signal DOut ( qui va sur DIN de l'anneau leds).
    Utilisation de matrice caractere de 8x8, mais caractere re-defini en 5x8 .pour pouvoir etre décalé à Gauche ou à Droite
    les 2 tables de caracteres 0 à 9 GAUCHE et DROITE sont conservées, pour symetriser l'affichage.
    Le deroulement de la boucle principale du programme se fait sur la synchro de la sortie SQWE 1HZ de la RTC.

    images/t_SCANA_Test_ONES.gif images/t_SCANA_Test_ZEROS.gif

    Test Pseudo Bit UN

    test pseudo bit ZERO

    Config. Analyser : SCANA_Test_ZEROS.scana
    Une RAZ anneau necessite l'envoi de 1440 bytes ! ou pseudo bits.


    Remarque
    :
    j'ai perdu beaucoup de temps sur cette version n à cause d'une bevue
    en commençant la sequence du pseudo bit ZERO , en mettant BCF .. mise à zero du bit , au lieu de le mettre à 1 !
    mauvais reflexe !
    le pseudo bit ZERO et UN, commencent tous les 2 , par une mise à 1 de la sortie DOut.

    Modif. de cette version Horloge V1 , Dec 2019:
    Hardware: Rajout regulateur DC/DC 5V -> 3,3V
    Nota : alim avec bloc 230V/5V USB de 2 Amps ! sinon Probleme avec bloc de 5V 1Amps seulement.
    rajout commande PLM = Periode Luminosité Reduite , afin de ne pas etre trop eclairé la nuit , si l'horloge est par ex: dans une chambre
    par defaut PLM=18:06 => reduit la luminosité de la matrice au minim de 18H00 à 06H00 du matin
    L'anneau reste alors ETEINT pendant cette période, (car le reglage de luminosite ne peut pas etre plus reduit que cela, meme avec 3,3V d'alim !)
    Toutes les commandes peuvent etre passées via un Terminal Bletooth !
    Correction d'un bug : en mode 2, modulo 10minutes, anneau progresse de 2 pas chaque seconde et affiche Vert Et Rouge
    oubli d'un Break sur switch (Mn%10) ..en ligne 1521


    SOFTWARE V1:
    derniere version du 01/12/2019 :
    Horloge_V1_PIC18F27K42_Anneau_60leds_4_Matrices_Max7219_191201.zip








    Horloge Version 2 , avec PIC18F27K42
    Anneau en 4 quarts : 4x15 leds et 4 Matrices 8x8 H Inversées

    En Résumé:

    Flash Program Memory Size (KB) 128Ko
    CPU Speed (MIPS/DMIPS) 16
    SRAM Bytes 8,192
    Data EEPROM/HEF (bytes) 1024
    Digital Communication Peripherals 2-UART, 1-SPI, 2-I2C
    Capture/Compare/PWM Peripherals 4 CCP,
    Timers 3 x 8-bit, 4 x 16-bit
    ADC Input 24 ch, 12-bit
    Number of Comparators 2
    Temperature Range (C) -40 to 125
    Operating Voltage Range (V) 1.8 to 5.5
    Pin Count 28

    images/t_Base_18F2xKx2_populated_191017.gif


    Programmation 18F27K42:

    config Bits


    Projet zippé : _Horloge_Anneau_60leds_18F27K42_190620.zip
    Executable : Horloge_PIC18F27K42_Anneau_60leds_4_Matrices_Max7219_190620.hex
    Attention : Necessite Pickit 4 et MPLABX IPE V1.5


    Presentation :
    Directory :C:\_MikroC\_MesProjets_MikroC\Horloge_Anneau_60leds_18F27K42
    MikroC pro 7.30 Beta
    Projet :Horloge_PIC18F27K42_Anneau_60leds_4_Matrices_Max7219_1906.mcppi
    Test PIC18F27K42 I2C1 HW
    Config bit : P18F27K42_Fosc_Interne_64Mhz.cfgsch FOSC:64.0 MHz
    Source : Horloge_PIC18F27K42_Anneau_60leds_4_Matrices_Max7219_190619.c
    Test Sonde OWS DS18B20
    Family Code : 28 ID1= AA0F05411401 CRC= 70
    Mesure DS18B20= 26.37°C


    Init I2C1 HW RC3=SCL RC4=SDA
    Init RTC DS3231
    Active sortie SQW=1Hz:
    RTC_Forcée= 1
    Re-Lecture RTC
    18 06 19 03 19 45 06
    18 06 19 03 19 45 07
    18 06 19 03 19 45 08
    18 06 19 03 19 45 09
    Temperature interne DS3231 = 28.00°C
    Bit Bang Soft SPI RC2=Clk ,RC1=Dout RC0=CS -> MAx7219:
    Test interrupt Timer1 20 x 100 msec soit 2sec
    Test Wait_Keyb -> Timeout or char received
    #
    ... Waiting Keyboard Touch for <100 x 25mS >

    ?

    Init Interrupt RB0, synchro 1Hz RTC

    Init Interrupt UART RX
    19-06-18 19:45:14 Temp DS3231= 28.00°C ;26.25°C
    19-06-18 19:45:14 Temp DS3231= 28.00°C ;26.25°C
    19-06-18 19:45:15 Temp DS3231= 28.00°C ;26.25°C
    19-06-18 19:45:16 Temp DS3231= 28.00°C ;26.25°C

    Modification :

    Nouvelles matrices NON conformes aux premieres reçues !
    Le sens de commande est inversé ..!!!

    images/t_BAD_delivered_MAX7219_Displaying_191023.gif images/t_BAD_delivered_MAX7219-4_Matrice_191023.gif
    affichage doublement inversé ! Original (Version 1) et Fake utilisée dans a Version 2



    Contre Mesure pour adapter la nouvelle vesion de matrice :

    // 2em horloge
    // avec nouveaux modules
    // 4 x MAX7219+Matrice_8x8 à connections HORIZONTALES MAIS Reverse Matrice !!!
    // ligne ci dessous en commentaire , donc => matrice INVERSE
    // #define Direct_Matrice // matrice H de la precedente commande

    void SPI_Write_To_4x7219(Byte adr, Byte d1, Byte d2,Byte d3, Byte d4)
    { SPI_CS = 0;
    Delay_us(15);
    #ifdef Direct_Matrice
    SPI_WRITE_Byte(adr); SPI_WRITE_Byte(d1);
    SPI_WRITE_Byte(adr); SPI_WRITE_Byte(d2);
    SPI_WRITE_Byte(adr); SPI_WRITE_Byte(d3);
    SPI_WRITE_Byte(adr); SPI_WRITE_Byte(d4);
    #else
    SPI_WRITE_Byte(adr); SPI_WRITE_Byte(d4);
    SPI_WRITE_Byte(adr); SPI_WRITE_Byte(d3);
    SPI_WRITE_Byte(adr); SPI_WRITE_Byte(d2);
    SPI_WRITE_Byte(adr); SPI_WRITE_Byte(d1);
    #endif
    Delay_us(10);
    SPI_CS = 1;
    }


    * modif du 25/07/2020
    Pour Remettre l'affichage dans le bon sens ! suivant le type de matrices utilisées
    Rajout du traitement entree RB3 pour choix connection GAUCHE ou DROITE des matrices H
    au lieu du choix par #define
    sbit Type_De_Matrice_Dir at TRISB3_bit;
    sbit Type_De_Matrice at PORTB.B3;

    void SPI_Write_To_4x7219(Byte adr, Byte d1, Byte d2,Byte d3, Byte d4)
    { SPI_CS = 0;
    Delay_us(15);
    if(Type_De_Matrice==0)
    {
    SPI_WRITE_Byte(adr); SPI_WRITE_Byte(d1);
    SPI_WRITE_Byte(adr); SPI_WRITE_Byte(d2);
    SPI_WRITE_Byte(adr); SPI_WRITE_Byte(d3);
    SPI_WRITE_Byte(adr); SPI_WRITE_Byte(d4);
    }
    else
    {
    SPI_WRITE_Byte(adr); SPI_WRITE_Byte(d4);
    SPI_WRITE_Byte(adr); SPI_WRITE_Byte(d3);
    SPI_WRITE_Byte(adr); SPI_WRITE_Byte(d2);
    SPI_WRITE_Byte(adr); SPI_WRITE_Byte(d1);
    }
    Delay_us(10);
    SPI_CS = 1;
    }

    Ajout Plage horaire où la Luminosité affichage Matrices 8x8 est réduite au Minimum possible
    La tension d'alim. est déja réduite à 3,3V
    Via la liaison UART (ou via BlueTooth) la commande Plage Luminosité Minimale ,
    PLM=Heure Debut de plage: Heure Fin de plage
    2 digits pour former l'heure , Debut doit etre > 17 et FIN doit etre < 10
    exemple de commande : PLM=18:05
    Luminosité normale entre 06H00...17H00 puis reduite de 18H00 à 05H00
    Modif:
    si la commande n'est pas dans la plage autorisé, PLM desactivé via Valid_PLM=0

    Code pour verifier le contenu de la commande reçue:



    et la commutation du niveau de luminosité f ( Heure)
    * Nota: Le reglage de la plage horaire (si OK !) est sauvegardé en EEPROM

    ...ATTENTION ....
    Bug MikroC
    concernant L'EEPROM du PIC18F27K42
    dans le fichier *.iHex, crée sous mikroC,
    remplacer MANUELLEMENT dans le fichier *.ihex , la 1ere ligne
    :020000040121D8 par NEW adresse
    :020000040031C9 ..
    sinon MPLAB IPE fait la gueule (Msg d'alerte) et ne le charge pas.!





    Liaison et Association BlueTooth :
    Usage de BlueSoleil + cle APM USB/Bluetooth
    ou via BlueTerminal sur Phone Android ...
    module Bluetooh :
    HC05-2C14J (pastille jaune)
    Name= GAYA
    VERSION:3.0-20170609
    @=98:D3:51:F9:2C:14

    images/t_BlueTooth_Horloges_Anneaux.gif

    Ajout commande Help
    liste les commandes dispo:
    Help
    Mode=1 couleur à chaque Minute
    Mode=2 couleur alterné chaque seconde
    RTC mise à jour :
    U;30;10;19;21;32;03;#<CR>
    Plage Lumisosite Minimum des Matrices :
    PLM=18:06 entre 18H00 et 06H00


    Nota:
    Rajout d'un flag : "Valid_PLM"
    si erreur de plage PLM ,Valid_PLM=0 , donc ne baisse pas la luminosité
    PLM inutile si l'horloge est dans le salon .. Valid_PLM stocké en Eeeprom

    Software :
    avec MikroC 7.60

    SOFTWARE Projet :

    derniere revision du 28/12/2019 ,
    Horloge Anneau 4x15leds + *4 Matrices H Reverses
    Horloge_V2_18F27K42_Anneau_4_Quarts_4_Reverse_Matrices_Max7219_Horiz_191228.zip
    Horloge_V2_18F27K42_Anneau_60leds_4_quart_et_Reverse_Matrices_Max7219_191228.hex
    Tiny_RTC_DS3231_HARDW_I2C1_for_K42_1910.mcl
    EEPROM : Horloge_V2_18F27K42_Anneau_60leds_4_quart_et_Reverse_Matrices_Max7219_191228_Eeprom.ihex
    RTC : Tiny_RTC_DS3231_HARDW_I2C1_for_K42_1910.h
    source : Horloge_V2_18F27K42_Anneau_4_Quarts_4_Reverse_Matrices_Max7219_Horiz_191228.c

    nota:
    // remplacé le #define par choix harware via l' etat de la pin RB3
    // 0=connection à droite 1=connection à gauche

    rev 25/07/2020
    version de test sur BASE 18F27K42 ( sans anneau led, ni RTC, ni DS18B20)
    _Horloge_Anneau_60leds_18F27K42_version_Jou_mois_Heure_Temp_en_Alternance_2020_0725.zip
    Horloge_V3_18F27K42_Anneau_4_Quarts_4_Reverse_Matrices_Max7219_Horiz_Alternance_Jour_Mois_Heure_Temp_2020_0725_en_Test.c
    Horloge_V3_18F27K42_Anneau_60leds_4_quart_et_Reverse_Matrices_Max7219_avec_date_2020_0725.hex





    MONTAGE MECANIQUE V2 ( Gaya ), et Assemblage


    L'Anneau est livré en 4 morceaux (4/4) de 4x15 leds RGB
    il faut donc reconstituer l'anneau et revoir sa fixation

    images/t_ANNEAU_60leds_RGB_4_Quart_Back.gif

    images/t_Anneau_4x4_60leds_Back_connections.gif images/t_Gabarit_Platine_support_Horloge_Anneau_191111.gif
    livraison en 4 morceaux anneau assemblé et soudé gabarit de perçage et positionnement


    Matrice 8x8 avec MAX7219
    (inversée!)


    d'où le raccordement à droite ! ( à gauche sur la version 1 Horloge )

    images/t_Horloge_Anneau_60leds_V2_vue_arriere_1.gif images/t_Horloge_Anneau_60leds_V2_Zoom_arriere_1.gif
    Implantion des elements zoom, .. avec le module d'alimentation en place


    images/t_Horloge_Anneau_60leds_V2_vue_Dessus.gif
    vue arriere avec plastron de protection / support vue de Dessus, plastron monté sur les 4 entretoises Régulateur 5V DC/ 3.3V DC LM2596

    OK, c'est pas en IP54 ! mais on a que du 5V DC maxi qui traine , de plus ça respire sans probleme.
    Quasiment pas d'auto echauffement du capteur de temperature air ambiant .

    images/t_Horloges_Anneaux_2019.gif
    Version 1: 18F26K22 1 seul anneau et V2 avec 18F27K42 avec 4 branches de 15 pour l'anneau Version 2 filtre clair, et version 1 avec filtre Gris foncé

    Nota: Usage d'un morceau de classeur Gris Foncé (A4 File cas PP 2531550 1.79€ chez Action) ,
    comme FILTRE cache Matrices leds ...

    Résultat :
    On observe un ecart de 0,2°C entre les 2 capteurs DS18B20 .. c'est pas si mal que ça!
    Clik sur l'image => agrandie, et vue en mode Horloge
    J'ai mis une protection arriere , qui sert aussi à maintenir l'horloge , debout , sur table.
    L'alimentation de la V2, se fait via un bloc secteur/5V 2,1A USB --> cable --module regulateur LM2596

    29/11/2019
    Modif Hardware de la version 1 et V2 :
    Rajout d'un regulateur de tension LM2596 , pour reglage à 3,3V , car trop de lumineuse !

    Video :
    Horloge_Anneau_60leds_V2_191117.webm



    Appinventor2 Software
    Application V1 ( pour BT Gaya):

    Source AIA : Gaya_Horloge_Anneau_60leds_RGB_4_Matrices_H_18F26K22_2020_0617.aia
    programme Android : Gaya_Horloge_Anneau_60leds_RGB_4_Matrices_H_18F26K22_2020_0617.apk
    Blocks : blocks_Horloge_Anneau_60leds_18F26k22_20202_0617_Gaya.jpg
    particularité :
    images/t_Get_Trame_18F26K22_Gaya.gif




    Application V2 (pour BT HC06:

    Source AIA : H06_02_Anneau_60leds_RGB_4_Matrices_H_18F27K42_2020_0617.aia
    Blocks : blocks_Horloge_Anneau_60leds_18F27K42_20202_0617_H06.jpg
    programme Android : HC06_02_Horloge_Anneau_60leds_RGB_4_Matrices_H_18F27K42_2020_0617.apk
    Particularité :
    images/t_Get_Trame_18F27K42_HC06-02.gif

    Designer :




    IMPORTANTE REMARQUE
    MikroC ne sait toujours pas gérer correctement l'Eeprom du Pic 18F27K42

    ex:
    Horloge_V1_PIC18F27K42_Anneau_entier_60leds_4_Matrices_Max7219_1912_eeprom.ihex!
    :020000040121D8 <--- Probleme ICI à remplacer par :020000040031C9
    :100000003165726520486F726C6F676520416E6E56
    :100010006175203630206C65647320524742202B76
    :10002000206574204D617472696365203478204DB9
    * par contre pour recharger le fichier EEprom dans le Tools MikroC
    il faut REMETTRE LA BAD ADRESSE !
    mettre à jour le fichier sous mikroC avec Tools Eeprom
    Ne pas compiler
    et .. rechanger l'adresse pour compiler le programme
    afin que cleui ci puisse etre chargé correctement
    dans MPLAB IPE + Pickit4





    Horloge Version 3 , avec PIC18F27K42
    Meme Hardware que version 2 : Anneau en 4 quarts : 4x15 leds et 4 Matrices 8x8 H Inversées

    Vue Arriere :

    images/t_Horlog_V3_Anneau_60leds_RGB_4_Matrices_Back_View_2020_07.gif

    Essai avec 4 matrice défilantes + ruban 60 leds

    Impossible de gerer concomitamment le defilement des 4 matrices MAX7219 ET la mise à jour ruban 60 leds WS812
    Separement , c'est OK
    Ensemble , l'interrupt RB0 ne fait plus son JOB . et le ruban bloque des la 1ere mise à jour de position ( every seconde).
    Probleme liés à l'usage de SPI software et SPI bit bang pour les 2 devices : Ruban led et Matrices Max72129 ?
    Le timing Ruban etant TRES STRICT (meme avec une tolerance de +-150nS)
    Bref, je suis arrivé , comme le Principe de Peter le prevoit, à mon niveau d'incompétence .
    Je me suis donc retourné sur une solution plus simple et déja testée OK,

    avec 4 matrice Fixes :

    images/t_Horloge_V3_Anneau_60led_4matrices_Phases_18F27K42_2020_07.gif


    Affichage fixe en 4 phases alternées pour visualiser
    1) Le nom du jour , reduit à 2 characteres et le numero du jour => Di28 sur 4 matrices) // 2sec
    2) Le nom du mois => Juin sur 4 matrices // 1sec
    3) L'Heure: HH:Mn => 13:26 avec 5 chars sur 4 Matrices ! // 1sec
    4) La Temperature ambiante 23.6°C avect 5 chars sur 4 matrices ! // 2sec
    Nota:
    * la capture affichage mois de Juin a été faite en Mode=1, les autres en Mode=2
    * la separation HH et Mn n'apparait qu'une seconde sur 2
    La fonte utilisée ici pour Jour et mois est "Epaisse" (font_8x8_H8.h)

    SOFTWARE :
    Projet MikroC : Horloge_Anneau_60leds_18F27K42_Jour_mois_Heure_Temp_en_Alternance_2020_07.zip
    Source : Horloge_V3_18F27K42_Anneau_4_Quarts_4_Reverse_Matrices_Max7219_Horiz_Alternance_Jour_Mois_Heure_Temp_2020_07.c
    Lib : Tiny_RTC_DS3231_HARDW_I2C1_for_K42_2020_07.mcl
    Eeprom * : Horloge_V3_18F27K42_Anneau_60leds_4_quart_et_Reverse_Matrices_Max7219_avec_date_2020_07_EEPROM.ihex
    Chargeur : Horloge_V3_18F27K42_Anneau_60leds_4_quart_et_Reverse_Matrices_Max7219_avec_date_2020_07.hex


    L'application utilise les lib MikroC suivantes :
    _Lib_Math.mcl" "
    _Lib_MathDouble.mcl" "
    _Lib_System.mcl" "
    _Lib_Delays.mcl" "
    _Lib_CType.mcl" "
    _Lib_CString.mcl" "
    _Lib_CStdlib.mcl" "
    _Lib_Conversions.mcl" "
    _Lib_OneWire.mcl" "
    _Lib_ADC_K40.mcl" "
    _Lib_EEPROM_1024_K42.mcl" "
    _Lib_PPS_2xK42.mcl" "
    _Lib_UART_Remappable_K42_83.mcl" "
    _Lib_I2C_Remappable_K42.mcl"

    Nota 1:
    il faut modifier manuellement l'adresse de depart EEPROM PIC ( Bug MikroC !!)
    :020000040121D8 <--- Probleme ICI à remplacer par :020000040031C9

    nota 2:
    Utiliser Pickit4 pour le programmer via MPLABX IPE V5.30

    0 1144 Used RAM (bytes): 2146 (26%)...... Free RAM (bytes): 6024 (74%)
    0 1144 Used ROM (bytes): 24077 (18%) ... Free ROM (bytes): 106995 (82%)
    Encore ENORMEMENT de place dispo dans ce PIC


    Appli Appinventor pour Version 3:

    modif coté application MikroC pour avoir un comma (virgule) entre les differents champs envoyé sur BlueTooth
    mode CSV (Comma Sparated Value) décryptable plus facilement avec appinventor



    Android Appli AI2 :
    HC06_02_Horloge_Anneau_60leds_RGB_4_Matrices_H_18F27K42_2020_0617.apk
    HC06_Horloge_V3_Anneau_60leds_RGB_4_Matrices_H_18F47K42_2020_07.aia

    Videos :
    Horloge_V3_Anneau_4_Matrice_2020_07.webm

    Last modif :
    * n'afficher le jour et numero du jour que pendant 1 seconde au lieu de 2 sec
    * Utilisation d'une Fonte plus fine pour le Texte Jour et Mois, charactere trop Large (avec Fonte_8x8H)
    l'affichage en numerique HHMM et Temperature se faisant avec une fonte specifique pour l'alignement Gauche et droite des chiffres
    ou le mixage des points separateur ,ou le symbole °C

    New Fonte : THIN_SS_2020.h




    à suivre :
    *Peut etre LA SOLUTION ? au mode defilement + Ruban :
    ......à étudier une Cde Ruban en PWM + CLC => Hardware + Soft au lieu de 100% Soft bit-bang







    Horloge Version 4 , pour PIC18F26K22


    TEST #1 sur Horloge defil 12 Matrices 18F26K22
    Mais Hardware 4 Matrices 8x8 H Directes

    Horloge NON realisée , juste le soft modifié pour avoir les meme fonctionalités que la version 3 (modifiée pour 18F27K42 )

    J'ai utilisé mon Horloge defilante 12 matrices 18F26K22 , pour modifier et tester le programme
    qui tourne donc que sur les 4 premiers matrices ( sur 12)
    Je n'ai pas non plus d'anneau 60 leds en rab ...pour un test à 100%

    Rappel coté Hardware :
    Liaison PIC -> Matrices
    RC0 pin ....... Clock
    RC1 pin ........ CS
    RC2 pin..... .. Din

    Liaison PIC -> BlueTooth
    HC0_58701 pastille Bleue 19200bds dans Horloge defil. 12 matrices
    en liaison avec PIC12F1840 RN41 Maitre qui envoie la mesure de Temp TEX
    PIC ---------- HC05
    fil vert --------> RXD
    fil Jaune <------ TXD
    fil violet -------- GND
    fil gris ---------- +3,6V

    Compilation selective avec #Define Connection_Gauche


    void SPI_Write_To_4x7219(Byte adr, Byte d1, Byte d2,Byte d3, Byte d4)
    { SPI_CS = 0;
    Delay_us(15);
    #ifdef sens_GAUCHE
    // test sur 1 seul bloc de 4 matrices conections à GAUCHE
    SPI_WRITE_Byte(adr); SPI_WRITE_Byte(d4);
    SPI_WRITE_Byte(adr); SPI_WRITE_Byte(d3);
    SPI_WRITE_Byte(adr); SPI_WRITE_Byte(d2);
    SPI_WRITE_Byte(adr); SPI_WRITE_Byte(d1);
    #else
    SPI_WRITE_Byte(adr); SPI_WRITE_Byte(d1);
    SPI_WRITE_Byte(adr); SPI_WRITE_Byte(d2);
    SPI_WRITE_Byte(adr); SPI_WRITE_Byte(d3);
    SPI_WRITE_Byte(adr); SPI_WRITE_Byte(d4);
    #endif
    // pour test avec 12 matrices !
    #ifdef Speciale
    SPI_WRITE_Byte(adr); SPI_WRITE_Byte(0);
    SPI_WRITE_Byte(adr); SPI_WRITE_Byte(0);
    SPI_WRITE_Byte(adr); SPI_WRITE_Byte(0);
    SPI_WRITE_Byte(adr); SPI_WRITE_Byte(0);
    SPI_WRITE_Byte(adr); SPI_WRITE_Byte(0);
    SPI_WRITE_Byte(adr); SPI_WRITE_Byte(0);
    SPI_WRITE_Byte(adr); SPI_WRITE_Byte(0);
    SPI_WRITE_Byte(adr); SPI_WRITE_Byte(0);
    #endif
    Delay_us(10);
    SPI_CS = 1;
    }



    V4 Pré_TEST :
    SOFTWARE
    Testé sur les 4 premieres matrices du montage "Affichage Horloge defilante 12 matrices "!
    Horloge_V4_Speciale_18F26K22_4_Matrice8x8_H_Gauche_Anneau_60leds_RGB_Date_jour_HHMN_Temp_Alternees_2020_0724.c
    Horloge_V4_Speciale_18F26K22_4_Matrice8x8_H_Gauche_Anneau_60leds_RGB_Date_jour_HHMN_Temp_Alternees_2020_0724.hex
    lib : Tiny_RTC_DS3231_for_AI2_2020_07.mcl
    PIC Eeprom : Horloge_V_Speciale_18F26K22_4_Matrice8x8_H_Anneau_60leds_RGB_Date_jour_HHMN_Temp_Alternees_2020_EEprom.ihex

    Video du test
    ( sur 12 matrices) :
    Horloge_V4_Anneau_4_Matrice_18F26K22_2020_07.webm



    TEST #2 avec BASE 18F26K22
    et un seul module 4 bloc Matrices 8x8 H , sens defilement GAUCHE

    images/t_Horlog_V4_Test_2020_0714.gif





    Version 25/07/2020
    pour Horloge Anneau et 4 matrices
    Rajout traitement entree RB3 pour sens GAUCHE ou DROIT des matrices
    par defaut RB3=1 => DROIT ( sinon , pour coté GAUCHE strapper RB3 et 0V)

    void SPI_Write_To_4x7219(Byte adr, Byte d1, Byte d2,Byte d3, Byte d4)
    { SPI_CS = 0;
    Delay_us(15);
    if(Type_De_Matrice==1)
    {
    SPI_WRITE_Byte(adr); SPI_WRITE_Byte(d4);
    SPI_WRITE_Byte(adr); SPI_WRITE_Byte(d3);
    SPI_WRITE_Byte(adr); SPI_WRITE_Byte(d2);
    SPI_WRITE_Byte(adr); SPI_WRITE_Byte(d1);
    }
    else
    {
    SPI_WRITE_Byte(adr); SPI_WRITE_Byte(d1);
    SPI_WRITE_Byte(adr); SPI_WRITE_Byte(d2);
    SPI_WRITE_Byte(adr); SPI_WRITE_Byte(d3);
    SPI_WRITE_Byte(adr); SPI_WRITE_Byte(d4);
    }
    Delay_us(10);
    SPI_CS = 1;
    }

    Projet :
    _Horloge_V4_GAYA_Anneau_60leds_18F26K22_2020_0725.zip
    Horloge_V4_GAYA_18F26K22_4_Matrice8x8_H_Gauche_Anneau_60leds_RGB_Date_jour_HHMN_Temp_Alternees_2020_0725.c
    Horloge_V4_GAYA_18F26K22_4_Matrice8x8_H_Gauche_Anneau_60leds_RGB_Date_jour_HHMN_Temp_Alternees_2020_0725.hex
    Tiny_RTC_DS3231_for_AI2_2020_07.mcl

    pas de test réel avec anneau ..je n'ai plus l'horloge V1


    Video :
    Horloge_V4_Anneau_4_Matrice_Gauche_18F26K22_2020_07.webm






    Mesure de la durée d' Execution d'une Fonction ou sous programme
    Exemple : l'operation RAZ anneau 60 leds :

    la fonction :



    L'outil : Le Timer3 , est utilié simplement comme compteur HARDWARE
    declenché juste AVANT l'appel de la fonction ....et arreté juste APRES
    la lecture , écart de comptage , renseigne sur la duree écoulé, en nombre de cycles .

    void Init_Timer3()
    {
    // Fosc=64Mhz
    //Prescaler 1:8; TMR3 Preload = 5536; Actual Interrupt Time : 30 ms


    T3CON = 0x31;
    TMR3ON_bit=0; // STOP
    TMR3IF_bit = 0;
    TMR3H = 0x00;
    TMR3L = 0x00;
    TMR3IE_bit = 0; // no interrupt
    }


    On peut aussi , mesurer uniquement la partie effective de la RAZ
    sans la partie RESET pointeur led , qui prend 900µS en amont et 1000µS en aval
    en mettant le depart et l'arret timer3 , dans la partie RAZ , envoi des 1440 bytes
    La methode d'utilisation :

    Arreter ,si necessaire, toute source d'interruption pouvant modifier la mesure de durée..

    unsigned long val3;
    .......
    void main()
    ....
    CRLF1();
    //UART1_Write_CText("mesure Delay_ms(59); r\n");
    // UART1_Write_CText("mesure RAZ_Anneau_60_Leds\r\n");
    UART1_Write_CText("Mesure Delay_ms(5);\r\n");
    Init_Timer3(); // 0.5µS / count at 64MHz
    val1=(TMR3H<<8)|TMR1L;

    Etat=INTCON; // sauve etat GIE bit ..etc
    GIE_bit=0;
    TMR3ON_bit=1;
    Delay_ms(5); // Duree mesuree = 4992µS +-1µ5
    // Delay_ms(59); //Duree mesuree= 59008µS +-1µ5
    //UART1_Write_CText("Duree mesurée RAZ_Anneau_60_Leds\r\n);
    TMR3ON_bit=0;

    val3=(TMR3H<<8)|TMR1L;
    if (TMR3IF_bit==1) val3=val3+65536;
    val3=val3>>1;
    LongWordToStr(val3,CRam1);
    UART1_Write_Text(CRam1);UART1_Write_CText("µS\r\n");
    CRLF1();

    INTCON=Etat;

    Résultats:

    // Duree globale fonction RAZ anneau= 4480µS
    // Duree seulement de la partie RAZ= 2688µS ( envoi de 1440 bytes en simili ASM)
    // autre moyen de mesure : avec MikroC Debugger + chrono : 41993 cycles * 0.0625=> 2624µS



    paulfjujo@free.fr


    Retour à l'index general